1. Field of the Invention
This invention generally relates to digital data storage and, more particularly to bandwidth division management system providing Quality of Service (QoS) to clients accessing a file system share on a network-attached storage subsystem.
2. Description of the Related Art
Network-attached storage (NAS) is file level computer data storage connected to a computer network to provide data access to heterogeneous mix of network clients. A NAS unit is a computer connected to a network that only provides file-based data storage services to other devices on the network. Although it may technically be possible to run other software on a NAS unit, it is not designed to be a general purpose server. For example, NAS units usually do not have a keyboard or display, and are controlled and configured over the network, often using a browser. A fully-featured operating system is not needed on a NAS device, so often a stripped-down operating system is used. For example, FreeNAS, an open source NAS solution designed for commodity PC hardware, is implemented as a stripped-down version of FreeBSD.
NAS systems contain one or more hard disks, often arranged into logical, redundant storage containers or RAID arrays (redundant arrays of inexpensive/independent disks). NAS removes the responsibility of file serving from other servers on the network. NAS uses file-based protocols such as NFS (popular on UNIX systems), SMB/CIFS (Server Message Block/Common Internet File System) (used with MS Windows systems), or AFP (used with Apple Macintosh computers). NAS units rarely limit clients to a single protocol.
NAS provides both storage and a file system. This system is often contrasted with SAN (Storage Area Network), which provides only block-based storage and leaves file system concerns on the “client” side. SAN protocols are SCSI, Fibre Channel, iSCSI, ATA over Ethernet (AoE), or HyperSCSI. The key difference between direct attached storage (DAS) and NAS is that DAS is simply an extension to an existing server and is not networked, while NAS sits on a network as its own entity; it is easier to share files with NAS.
Performance can be increased using a NAS because the file serving is done by a dedicated (NAS) server, not a server responsible for performing other processing tasks. The performance of NAS devices depends heavily on the speed of and traffic on the network and on the amount of cache memory on the NAS computers or devices.
FIG. 1 is a schematic block diagram depicting a network with multiple CIFS clients requesting a file system share (prior art). A NAS subsystem or a Common Internet File System (CIFS) server subsystem exports a storage file system over a networked infrastructure. This storage can be accessed by multiple CIFS clients who can perform read/write access to the shared media. A CIFS server is a software module that runs on a NAS subsystem and exports file system shares to be accessed by CIFS clients over a TCP/IP Network. A CIFS client is a software module that runs on any computer system and accesses a file system share over a TCP/IP network from a CIFS server running on a NAS subsystem. TCP/IP (Transmission Control Protocol/Internet Protocol) is the most widely used protocol for data networking.
Presently there exists no bandwidth management/QoS enforced on the NAS subsystem/CIFS server side. As shown in the figure, when a CIFS client requests a file system mapping share from a NAS subsystem/CIFS Server, it is allocated without any bandwidth management/QoS considerations. If the number of clients accessing the shared storage over the network is small, the clients may very well experience good throughput. As the number of clients accessing the NAS subsystem increases, the throughput per client reduces due to the limited bandwidth available on the NAS subsystem. These low throughput characteristics might be sufficient for some clients, whereas other clients may require a certain level of guaranteed bandwidth due to the data intensive nature of the applications running on their client systems.
FIG. 2 is a schematic block diagram of a NAS system where bandwidth management/QoS is performed at the network level (prior art). A QoS capable switch is configured to limit the bandwidth of data flow between the NAS subsystem and a NAS client. The addition of a switch, and associated software, to perform QoS/bandwidth management is costly. Further, QoS-aware networking equipment is not always efficient, as the switch is not necessarily aware of NAS capabilities and client needs.
It would be advantageous if a NAS subsystem was aware of how much throughput it could deliver over a particular network, and make bandwidth allocation decisions based on this information.
It would be advantageous if bandwidth allocation could be performed by file system share mapping and the use of client identity.